//
// Created by forgot on 2019-08-04.
//
/*1064 朋友数 (20 point(s))*/
/*如果两个整数各位数字的和是一样的，则被称为是“朋友数”，而那个公共的和就是它们的“朋友证号”。例如 123 和 51 就是朋友数，因为 1+2+3 = 5+1 = 6，
 * 而 6 就是它们的朋友证号。给定一些整数，要求你统计一下它们中有多少个不同的朋友证号。

输入格式：
输入第一行给出正整数 N。随后一行给出 N 个正整数，数字间以空格分隔。题目保证所有数字小于 10
​4
​​ 。

输出格式：
首先第一行输出给定数字中不同的朋友证号的个数；随后一行按递增顺序输出这些朋友证号，数字间隔一个空格，且行末不得有多余空格。

输入样例：
8
123 899 51 998 27 33 36 12
输出样例：
4
3 6 9 26*/

//#include <stdio.h>

//只要有两个数的数字和相等即可，直接统计和 1～37的个数，个数>=2就是朋友数了
//int main() {
//    int N;
////    最大数9999，和是36
//    int friendCount[37] = {0};
//
//    scanf("%d", &N);
//    for (int i = 0; i < N; i++) {
//        int num;
//        int friend = 0;
//
//        scanf("%d", &num);
//        while (num) {
//            friend += num % 10;
//            num = num / 10;
//        }
//
//        friendCount[friend]++;
//    }
//
//    int total = 0;
//    for (int j = 0; j < 37; j++) {
//        if (friendCount[j]) {
//            total++;
//        }
//    }
//
//    printf("%d\n", total);
//
//    for (int k = 0; k < 37; k++) {
//        if (friendCount[k]) {
//            if (total != 1) {
//                printf("%d ", k);
//                total--;
//            } else {
//                printf("%d", k);
//            }
//        }
//    }
//
//    return 0;
//}
